package com.xhsj.user.sms.process.mapper;

import com.xhsj.user.sms.process.entity.TbPurchaseProcessTask;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 任务表 Mapper 接口
 * </p>
 *
 * @author suxiaolin
 * @since 2020-03-16
 */
@Mapper
public interface TbPurchaseProcessTaskMapper extends BaseMapper<TbPurchaseProcessTask> {

    /**
     * 查询正在运行的任务
     * @author 苏小林
     * @date 2020/3/17 12:59
     * @param: page
     * @param: userId
     * @param: roleList
     * @return: java.util.List<java.util.Map<java.lang.String,java.util.Objects>>
     */
//    IPage<TaskModel> findRunTaskList(Page<TaskModel> page, @Param("userId") String userId, @Param("roleList") List<String> roleList);

    /**
     * 查询历史任务列表
     * @author 苏小林
     * @date 2020/3/17 13:41
     * @param: page
     * @param: userId
     * @param: status
     * @return: com.baomidou.mybatisplus.core.metadata.IPage<TaskModel>
     */
//    IPage<TaskModel> findHiTaskList(IPage<TaskModel> page, @Param("userId") String userId, @Param("status") Integer status);

    /**
     * 删除任务
     * @author 苏小林
     * @date 2020/3/17 15:53
     * @param: dataId
     * @param: nodeId
     * @return: int
     */
    int deleteTask(@Param("dataId") String dataId, @Param("nodeId") String nodeId);

    //下一个节点名称
    Map<String, Object> getNodeName(@Param("nodeId") String nodeId);

    int delByDataId(@Param("id") String id);

    //删除正在执行得流程
    int deleteTaskByParam(@Param("dataId") String dataId,
                          @Param("nodeId") String nodeId,
                          @Param("departIdList") List<String> departIdList,
                          @Param("roleList") List<String> roleList,
                          @Param("userId") String userId
    );

    //查询除了自己是否都审核完了
    List<String> getTaskByParam(@Param("dataId") String dataId,
                                @Param("nodeId") String nodeId,
                                @Param("departIdList") List<String> departIdList,
                                @Param("roleList") List<String> roleList,
                                @Param("userId") String userId);

    //根据业务id删除
    int deleteTaskByDataId(@Param("dataId") String dataId);

    int deleteTaskById(@Param("id") String id);

    //正在执行的合同审批
    List<Map<String, Object>> getContractExcelFlowList(@Param("dataId") String dataId);

    //供应链代办数
    Integer purchaseAgencyNum(@Param("userId") Integer userId, @Param("roleList") List<String> roleList, @Param("departList") List<String> departList);

    TbPurchaseProcessTask getByDataId(@Param("dataId") String dataId);

    TbPurchaseProcessTask getByDataIdAndNodeId(@Param("dataId") String dataId, @Param("nodeId") String nodeId);
}
